package arrays;

/**
 * 题目：缺失的数字
 * 有0-n这样的n+1个数，去掉其中一个数字，然后放到一个长度为n的数组里面，要求找到这个数字
 * （题目严谨点是0-n分别对应数组的下标）
 * y : 0 1 2 3 4    0-4的一个数组
 *     0 1 2 4      这里就是0-4的数组缺失了3，要求找到3这个数字
 *
 * @Author Gavin
 * @date 2021.12.19 20:41
 */
public class array_5 {
    /**
     * 解题思路：
     *  使用异或运算，我们知道相同的数字异或之后就为0，
     *  如果最后剩余的数字就是缺少的数字
     *
     */
    public static int solution(int[] arrays){
        int n=arrays.length,result=n;//注意这里result的值为n，就相当于是n+1的数组下标了
        for (int i = 0; i < n; i++) {
            result=result^i^arrays[i];//这里就相当于是是n+1个元素异或n个元素，最后会得到缺少的那个元素
        }
        return result;
    }
}
